<?php
/**
 * Created by PhpStorm.
 * User: dingxiaolin
 * Date: 2021-03-03
 * Time: 23:29
 */

namespace app\common\model;

use think\Model;
use think\Request;

//注意大小写，导入think的Model类

class Teacher extends Model
{
    /**
     * 用户登录
     * @param string $username 用户名
     * @param string $password 密码
     * @return bool 成功返回true，失败返回false
     */

    static public function login($username, $password)
    {
        //验证用户是否存在
        $map = array('username' => $username);
        $Teacher = self::get($map);

        if (!is_null($Teacher)) {
            //验证密码是否正确
            if ($Teacher->checkPassword($password)) {
                //登录
                session('teacherId', $Teacher->getData('id'));
                return true;
            }
        }
        return false;
    }

    /**
     * 验证密码是否正确
     * @param string $password 密码
     * return bool
     */
    public function checkPassword($password)
    {
        if ($this->getData('password') === $this::encryptPassword($password)) {
            return true;
        } else {
            return false;
        }
    }


    /**
     * 密码加密算法
     * @param string $password 加密前密码
     * @param string            加密后密码
     */
    static public function encryptPassword($password)
    {
        if (!is_string($password)) {
            throw new \RuntimeException("传入变量类型非字符串，错误码2", 2);
        }
        return sha1(md5($password) . 'mengyunzhi');
    }

    /**
     * 注销
     * @return bool 成功 true，失败 false
     */
    static public function logOut()
    {
        //销毁session中数据
        session('teacherId', null);
        return true;
    }

    /**
     * 判断用户是否已经登录
     * @param boolean 已经登录 true
     */
    static public function isLogin()
    {
        //验证用户是否登录
        $teacherId = session('teacherId');

        //isset() 和 is_null()是一对反义词
        if (isset($teacherId)) {
            return true;
        } else {
            return false;
        }
    }


}